import { checkLogin, isLoggedIn } from '../utils/auth.js';

/**
 * 权限认证混入
 * 用于页面权限控制
 */
export default {
    data() {
        return {
            // 是否需要登录权限
            authRequired: false,
            // 当前用户是否已登录
            isUserLoggedIn: false
        };
    },

    onLoad() {
        // 检查当前登录状态
        this.isUserLoggedIn = isLoggedIn();

        // 如果页面需要登录但用户未登录，则进行拦截
        if (this.authRequired && !this.isUserLoggedIn) {
            this.handleAuthFailure();
        }
    },

    onShow() {
        // 再次检查登录状态，处理用户可能已在其他页面登录的情况
        const loginStatus = isLoggedIn();
        if (loginStatus !== this.isUserLoggedIn) {
            this.isUserLoggedIn = loginStatus;

            // 如果页面需要登录但用户未登录，则进行拦截
            if (this.authRequired && !this.isUserLoggedIn) {
                this.handleAuthFailure();
            } else if (this.isUserLoggedIn && this.onLoginSuccess) {
                // 如果用户已登录并且定义了登录成功回调，则调用
                this.onLoginSuccess();
            }
        }
    },

    methods: {
        // 权限检查
        checkAuth(options = {}) {
            return checkLogin(options);
        },

        // 处理权限检查失败
        handleAuthFailure() {
            checkLogin({
                redirect: true,
                showToast: true,
                toastMessage: '请先登录后再访问此页面'
            });
        },

        // 包装需要登录才能调用的方法
        withAuth(fn, options = {}) {
            return (...args) => {
                if (this.checkAuth(options)) {
                    return fn.apply(this, args);
                }
                return false;
            };
        }
    }
}; 